Skip to content

record(BACKEND-ROCM): index the decode profile, which refutes the transfer hypothesis - #1295

Merged
localai-bot merged 2 commits into
mudler:mainfrom
joral:record/rocm-decode-profile
Aug 21, 2026
Merged

record(BACKEND-ROCM): index the decode profile, which refutes the transfer hypothesis#1295
localai-bot merged 2 commits into
mudler:mainfrom
joral:record/rocm-decode-profile

Conversation

@joral

@joral joral commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

gfx1200 decode is kernel-bound. Profiled with rocprofv3 on an idle host, decode
isolated by differencing --max-tokens 4 against 36: wall 88.7 ms/token, GPU
kernel dispatch 59.99 ms/token, and real host/device transfer 0.885 ms/token.
The 59.31 ms/token that hipMemcpyAsync reports is the CPU blocking on unfinished
GPU work, not PCIe, so the MoE reference path's host round-trips are not the
cost anyone would have guessed they were.

Two measured leads: QuantizeQ8KK at 35% of GPU time, and GdnPostConvK at 19%.
The first has a named backend-agnostic cause on main, where MoeBlock quantizes
the same activation twice for gate and up.

Filed and not fixed, so the row names BACKEND-ROCM as owner: the quantizer is
not on main, and GdnPostConvK has no hypothesis yet. Both want red-first
evidence rather than a drive-by change.

Closes nothing; #1294 stays open as the tracked gap.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-sonnet-5 [Claude Code]

@localai-org-maint-bot

Copy link
Copy Markdown
Collaborator

The record addition is coherent and correctly separates API blocking time from measured H2D/D2H transfer time, but this branch is currently conflicting with main. Please rebase and preserve the current append-only issue-index entries.

@joral
joral force-pushed the record/rocm-decode-profile branch from b9b545e to 9a85d08 Compare August 19, 2026 12:53
…nsfer hypothesis

gfx1200 decode is kernel-bound. Profiled with rocprofv3 on an idle host, decode
isolated by differencing --max-tokens 4 against 36: wall 88.7 ms/token, GPU
kernel dispatch 59.99 ms/token, and real host/device transfer 0.885 ms/token.
The 59.31 ms/token that hipMemcpyAsync reports is the CPU blocking on unfinished
GPU work, not PCIe, so the MoE reference path's host round-trips are not the
cost anyone would have guessed they were.

Two measured leads: QuantizeQ8KK at 35% of GPU time, and GdnPostConvK at 19%.
The first has a named backend-agnostic cause on main, where MoeBlock quantizes
the same activation twice for gate and up.

Filed and not fixed, so the row names BACKEND-ROCM as owner: the quantizer is
not on main, and GdnPostConvK has no hypothesis yet. Both want red-first
evidence rather than a drive-by change.

Closes nothing; mudler#1294 stays open as the tracked gap.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-sonnet-5 [Claude Code]
Brings the branch to current main so the union merge driver resolves the
issue-index append locally. GitHub's server-side merge does not apply custom
merge drivers, which is the only reason the pull request read CONFLICTING.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [Claude Code]
@localai-bot
localai-bot merged commit c4043bd into mudler:main Aug 21, 2026
1 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants